  //给定一个非负整数数组 A， A 中一半整数是奇数，一半整数是偶数。 
//
// 对数组进行排序，以便当 A[i] 为奇数时，i 也是奇数；当 A[i] 为偶数时， i 也是偶数。 
//
// 你可以返回任何满足上述条件的数组作为答案。 
//
// 
//
// 示例： 
//
// 输入：[4,2,5,7]
//输出：[4,5,2,7]
//解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。
// 
//
// 
//
// 提示： 
//
// 
// 2 <= A.length <= 20000 
// A.length % 2 == 0 
// 0 <= A[i] <= 1000 
// 
//
// 
// Related Topics 排序 数组 
// 👍 116 👎 0

  
  package com.leetcode.editor.cn;
  public class SortArrayByParityIi{
      public static void main(String[] args) {
           Solution solution = new SortArrayByParityIi().new Solution();
      }
      //leetcode submit region begin(Prohibit modification and deletion)

      /**
       * 0 is oushu
       */
      class Solution {
    public int[] sortArrayByParityII(int[] A) {
// 			执行耗时:12 ms,击败了6.67% 的Java用户
//			内存消耗:41.4 MB,击败了51.90% 的Java用户
        int temp =0;
        for (int i = 0 , size = A.length ; i < size ; i++){
            if ((A[i] == 0 || A[i] %2 == 0) && !(i==0 || i%2 ==0)){
                boolean findIndex = true;
                int index = i<size-1?i+1:0;
                while (findIndex){
                    if (A[index] == 0 || A[index] % 2 ==0){
                        index = (index+2)<size?index+2:0;
                        continue;
                    }
                    temp = A[index];
                    A[index] = A[i];
                    A[i] = temp;
                    findIndex = false;
                }
            }
        }
        return A;
    }

  /**
   * 方法一
   * 执行耗时:3 ms,击败了79.98% 的Java用户
   * 内存消耗:42.6 MB,击败了26.56% 的Java用户
   * @param A
   * @return
   */
    public int[] methodOne(int[] A){
        int[] B = new int[A.length];
        int ji = 1 , ou = 0;
        for (int i = 0 , size = A.length ; i < size ; i++){
            if ( A[i] == 0 || A[i] %2 == 0){
                B[ou] = A[i];
                ou += 2;
            }else {
                B[ji] = A[i];
                ji += 2;
            }
        }
        return B;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

  }